home *** CD-ROM | disk | FTP | other *** search
-
- { HEY! PcManíacos: }
-
- { Si queréis contactar con los autores de esta sección, }
- { ahora podéis hacerlo a través de sus e-mails privados: }
-
- { Miquel Barceló: (Demoscene) }
- { e-mail: sa281@blues.uab.es }
-
- { Eduard Sánchez Palazón (Curso de ficheros musicales/Demoscene) }
- { e-mail: eduard@ergos.es }
-
- { Esperamos vuestros mensajes! }
-
- { -------------------------------------------------------------- }
- { Efectos Recursivos / fire.pas }
- { Por Miquel Barceló }
- { -------------------------------------------------------------- }
-
- uses crt,graf;
-
- procedure Prepara_Paleta;
- var
- cont : integer;
- r,g,b : byte;
- begin
- for cont:=0 to 119 do begin
- putrgb(cont,50*cont div 119,0,0);
- end;
- for cont:=120 to 219 do begin
- putrgb(cont,50+(cont-120)*13 div 99,(cont-120)*63 div 99,0);
- end;
- for cont:=220 to 255 do begin
- putrgb(cont,63,63,(cont-220)*63 div 35);
- end;
- end;
-
- procedure bloque(segment,offset:word;col:byte);
- begin
- mem[segment:offset]:=col;
- mem[segment:offset+1]:=col;
- mem[segment:offset+2]:=col;
- mem[segment:offset+3]:=col;
- mem[segment:offset+4]:=col;
- mem[segment:offset+320]:=col;
- mem[segment:offset+321]:=col;
- mem[segment:offset+322]:=col;
- mem[segment:offset+323]:=col;
- mem[segment:offset+324]:=col;
- end;
-
- procedure Modifica_Resultado (donde: pointer; num_bloques : integer);
- var
- cont : integer;
- segment,offset : word;
- begin
- segment:=seg(donde^);
- offset :=ofs(donde^);
- for cont:=0 to num_bloques do
- bloque (segment,offset+62721+random(312),230+random(25));
- end;
-
- procedure Fuego (donde: pointer);
- var
- cont : word;
- segment,offset : word;
- temp : byte;
- begin
- segment:=seg(donde^);
- offset :=ofs(donde^);
- for cont:=offset to offset+63360 do
- begin
- temp:=(mem[segment:cont]+
- mem[segment:cont+319]+
- mem[segment:cont+321]+
- mem[segment:cont+640])shr 2;
- if temp<>0 then temp:=temp-1;
- mem[segment:cont]:=temp;
- end;
- end;
-
- var
- pant :pointer;
- c :integer;
-
- begin
- getmem(pant,64000);
- cls(0,pant^);
- Set_Vga;
- Prepara_Paleta;
- repeat
- Modifica_Resultado (pant,40);
- Fuego(pant);
- flip(pant^,vga^);
- until keypressed;
- for c:=40 downto 0 do begin
- Modifica_Resultado (pant,c);
- Fuego(pant);
- flip(pant^,vga^);
- end;
- Set_Text;
- freemem(pant,64000);
- end.